#pragma once
#include "AuthTypes.hpp"
#include "ApiHandler.hpp"

class AuthHandler : public ApiHandler
{
private:
	// 生成一个随机的会话ID
	// 每一个会话都会有一个对应的随机的会话ID
	string generateSessionId();

public:
	// 构造函数，初始化AuthHandler 给一个赋值
	explicit AuthHandler(DatabasePool& pool);

	// 注册路由封装
	void registerUser(const Request& req, Response& res);

	void login(const Request& req, Response& res);

	// 用户登出处理函数
	void logout(const Request& req, Response& res);

	// 认证请求的辅助函数，检查请求是否包含有效的会话ID
	static bool authenticateRequest(const Request& req, int& outUserId, string& outRole);

	~AuthHandler();
};


